In computing, a virtual machine (VM) is an emulation of a particular computer system. Virtual machines may operate based on the computer architecture and functions of a real or hypothetical computer. Implementing a virtual machine may involve specialized hardware, software, or both.
Virtual machines may be classified based on the extent to which they implement functionalities of targeted real machines. System virtual machines (also known as full virtualization VMs) provide a complete substitute for the targeted real machine and a level of functionality required for the execution of a complete operating system. In contrast, process virtual machines are designed to execute a single computer program by providing an abstracted and platform-independent program execution environment.
The use of VMs provides flexibility in the handling of tasks to execute in parallel. VMs can be created and deleted easily to meet the needs of task processing that evolve in real time. In multimedia processing, VMs provide flexibility for creating machines with desired properties, since the actual characteristics of a VM are a combination of software characteristics and characteristics of the physical machine on which the VM is executed.
In a multimedia head-end server, a plurality of machines, whether they be physical or virtual, are usually available. When a plurality of processes is to be executed on a plurality of machines, an orchestrator may be used to dispatch the execution of the processes amongst the machines.
When an orchestrator creates a VM in which a process is to be executed, the orchestrator usually creates a VM with computing resources just sufficient to execute the process. A VM obtains all its resources from the physical machine on which it is executed, even if these resources are unused by the processes running on the VM. Thus, creating a VM with computing resources allocated to the virtual machine is excess of the requirements of the computing load of the virtual machine wastes resources of the physical machine.
The computing load of multimedia processes, and particularly video processing processes, can vary. Live video transcoding can be performed in real time according to different options. Video encoding can be performed with different options and different complexities. PCT Patent Application No. PCT/EP2014/055823, filed by the Applicant, discloses the allocation of a level of quality to different video coders, and the activation of different video coding tools and options according to the level of quality to deliver in real time. It is possible, with such encoding systems, to obtain in real time, at the same bitrate, a video of better quality when allocating more computing resources to video coding.
In the video broadcast industry, the desired quality with which the same video channel is delivered may vary over time. For example, one may wish to obtain a better quality/size ratio for prime time programs. It is possible to obtain this result by first creating a VM for encoding of a TV channel live, then increasing the computing resources allocated to the VM to encode prime time or premium programs. It is possible to decrease the resources allocated to the VM afterwards, when the TV channels switches to non-prime time or non-premium programs. It is possible to predict a profile of computing resources to allocate to each VM at different times. However, this can be problematic when the computing load of a video encoding process running on the VM increases, as the computing resources of the VM may become insufficient to run processes in real time.
One solution to overcome this issue involves transferring the execution of the process to another machine. However, when the output of the process has to be delivered in real time, for example if the process relates to video encoding for streaming, transferring the execution of the process to another machine would result in a rupture of service, which is not acceptable.
If the machine on which the process is executed is a VM, another solution consists of increasing the resources of the VM, so that they become sufficient for performing the process properly. This can be achieved for example by increasing the CPU allocation or memory available on the VM. However this solution is not applicable to the physical machine. Moreover, it also brings uncertainty for VMs. Indeed, the resources of VMs rely on the resources of the physical machine on which they are executed. Thus, if the resources of the physical machine on which a VM is executed are already reserved, for example by other VMs, it is not possible to increase the resources available for a VM using those resources.
European patent application EP 15306393.8, filed Sep. 11, 2015 by the Applicant, discloses a scheduler of computer processes which is able to dispatch computer processes amongst different VMs, allocate VMs on a cluster of physical machines, and modify the resources of VMs so as to adapt to the variations of computing loads of the computer processes. This scheduler permits a fully adaptive management of virtual machines. However, it does not take into account, when allocating VMs on physical machines, the future variations of the computing resources of VMs. It is therefore possible, in extreme cases, that this prior art scheduler transfers the execution of a process to another VM, or transfers a VM to another physical machine. Even if they are rare, such a scheduler may occasionally generate ruptures of service.
There is therefore a need for a scheduler of computer processes in a cluster of physical machines, which is able, when the computer load of computer processes are predictable, to optimize, from the creation of computer processes, the dispatch of processes in the cluster of physical machines, and ensure, at any time, that the computer processes will be able to run in real time, without the need for process relocation.